/**
 * EasyUI for jQuery 1.8.1
 *
 * Copyright (c) 2009-2019 www.jeasyui.com. All rights reserved.
 *
 * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
 * To use it on other terms please contact us: info@jeasyui.com
 *
 */
(function ($) {
    var _1;
    $(document).unbind(".propertygrid").bind("mousedown.propertygrid", function (e) {
        var p = $(e.target).closest("div.datagrid-view,div.combo-panel");
        if (p.length) {
            return;
        }
        _2(_1);
        _1 = undefined;
    });

    function _3(_4) {
        var _5 = $.data(_4, "propertygrid");
        var _6 = $.data(_4, "propertygrid").options;
        $(_4).datagrid($.extend({}, _6, {
            cls: "propertygrid", view: (_6.showGroup ? _6.groupView : _6.view), onBeforeEdit: function (_7, _8) {
                if (_6.onBeforeEdit.call(_4, _7, _8) == false) {
                    return false;
                }
                var dg = $(this);
                var _8 = dg.datagrid("getRows")[_7];
                var _9 = dg.datagrid("getColumnOption", "value");
                _9.editor = _8.editor;
            }, onClickCell: function (_a, _b, _c) {
                if (_1 != this) {
                    _2(_1);
                    _1 = this;
                }
                if (_6.editIndex != _a) {
                    _2(_1);
                    $(this).datagrid("beginEdit", _a);
                    var ed = $(this).datagrid("getEditor", {index: _a, field: _b});
                    if (!ed) {
                        ed = $(this).datagrid("getEditor", {index: _a, field: "value"});
                    }
                    if (ed) {
                        var t = $(ed.target);
                        var _d = t.data("textbox") ? t.textbox("textbox") : t;
                        _d.focus();
                        _6.editIndex = _a;
                    }
                }
                _6.onClickCell.call(_4, _a, _b, _c);
            }, loadFilter: function (_e) {
                _2(this);
                return _6.loadFilter.call(this, _e);
            }
        }));
    };

    function _2(_f) {
        var t = $(_f);
        if (!t.length) {
            return;
        }
        var _10 = $.data(_f, "propertygrid").options;
        _10.finder.getTr(_f, null, "editing").each(function () {
            var _11 = parseInt($(this).attr("datagrid-row-index"));
            if (t.datagrid("validateRow", _11)) {
                t.datagrid("endEdit", _11);
            } else {
                t.datagrid("cancelEdit", _11);
            }
        });
        _10.editIndex = undefined;
    };
    $.fn.propertygrid = function (_12, _13) {
        if (typeof _12 == "string") {
            var _14 = $.fn.propertygrid.methods[_12];
            if (_14) {
                return _14(this, _13);
            } else {
                return this.datagrid(_12, _13);
            }
        }
        _12 = _12 || {};
        return this.each(function () {
            var _15 = $.data(this, "propertygrid");
            if (_15) {
                $.extend(_15.options, _12);
            } else {
                var _16 = $.extend({}, $.fn.propertygrid.defaults, $.fn.propertygrid.parseOptions(this), _12);
                _16.frozenColumns = $.extend(true, [], _16.frozenColumns);
                _16.columns = $.extend(true, [], _16.columns);
                $.data(this, "propertygrid", {options: _16});
            }
            _3(this);
        });
    };
    $.fn.propertygrid.methods = {
        options: function (jq) {
            return $.data(jq[0], "propertygrid").options;
        }
    };
    $.fn.propertygrid.parseOptions = function (_17) {
        return $.extend({}, $.fn.datagrid.parseOptions(_17), $.parser.parseOptions(_17, [{showGroup: "boolean"}]));
    };
    var _18 = $.extend({}, $.fn.datagrid.defaults.view, {
        render: function (_19, _1a, _1b) {
            var _1c = [];
            var _1d = this.groups;
            for (var i = 0; i < _1d.length; i++) {
                _1c.push(this.renderGroup.call(this, _19, i, _1d[i], _1b));
            }
            $(_1a).html(_1c.join(""));
        }, renderGroup: function (_1e, _1f, _20, _21) {
            var _22 = $.data(_1e, "datagrid");
            var _23 = _22.options;
            var _24 = $(_1e).datagrid("getColumnFields", _21);
            var _25 = _23.frozenColumns && _23.frozenColumns.length;
            if (_21) {
                if (!(_23.rownumbers || _25)) {
                    return "";
                }
            }
            var _26 = [];
            var css = _23.groupStyler.call(_1e, _20.value, _20.rows);
            var cs = _27(css, "datagrid-group");
            _26.push("<div group-index=" + _1f + " " + cs + ">");
            if ((_21 && (_23.rownumbers || _23.frozenColumns.length)) || (!_21 && !(_23.rownumbers || _23.frozenColumns.length))) {
                _26.push("<span class=\"datagrid-group-expander\">");
                _26.push("<span class=\"datagrid-row-expander datagrid-row-collapse\">&nbsp;</span>");
                _26.push("</span>");
            }
            if ((_21 && _25) || (!_21)) {
                _26.push("<span class=\"datagrid-group-title\">");
                _26.push(_23.groupFormatter.call(_1e, _20.value, _20.rows));
                _26.push("</span>");
            }
            _26.push("</div>");
            _26.push("<table class=\"datagrid-btable\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><tbody>");
            var _28 = _20.startIndex;
            for (var j = 0; j < _20.rows.length; j++) {
                var css = _23.rowStyler ? _23.rowStyler.call(_1e, _28, _20.rows[j]) : "";
                var _29 = "";
                var _2a = "";
                if (typeof css == "string") {
                    _2a = css;
                } else {
                    if (css) {
                        _29 = css["class"] || "";
                        _2a = css["style"] || "";
                    }
                }
                var cls = "class=\"datagrid-row " + (_28 % 2 && _23.striped ? "datagrid-row-alt " : " ") + _29 + "\"";
                var _2b = _2a ? "style=\"" + _2a + "\"" : "";
                var _2c = _22.rowIdPrefix + "-" + (_21 ? 1 : 2) + "-" + _28;
                _26.push("<tr id=\"" + _2c + "\" datagrid-row-index=\"" + _28 + "\" " + cls + " " + _2b + ">");
                _26.push(this.renderRow.call(this, _1e, _24, _21, _28, _20.rows[j]));
                _26.push("</tr>");
                _28++;
            }
            _26.push("</tbody></table>");
            return _26.join("");

            function _27(css, cls) {
                var _2d = "";
                var _2e = "";
                if (typeof css == "string") {
                    _2e = css;
                } else {
                    if (css) {
                        _2d = css["class"] || "";
                        _2e = css["style"] || "";
                    }
                }
                return "class=\"" + cls + (_2d ? " " + _2d : "") + "\" " + "style=\"" + _2e + "\"";
            };
        }, bindEvents: function (_2f) {
            var _30 = $.data(_2f, "datagrid");
            var dc = _30.dc;
            var _31 = dc.body1.add(dc.body2);
            var _32 = ($.data(_31[0], "events") || $._data(_31[0], "events")).click[0].handler;
            _31.unbind("click").bind("click", function (e) {
                var tt = $(e.target);
                var _33 = tt.closest("span.datagrid-row-expander");
                if (_33.length) {
                    var _34 = _33.closest("div.datagrid-group").attr("group-index");
                    if (_33.hasClass("datagrid-row-collapse")) {
                        $(_2f).datagrid("collapseGroup", _34);
                    } else {
                        $(_2f).datagrid("expandGroup", _34);
                    }
                } else {
                    _32(e);
                }
                e.stopPropagation();
            });
        }, onBeforeRender: function (_35, _36) {
            var _37 = $.data(_35, "datagrid");
            var _38 = _37.options;
            _39();
            var _3a = [];
            for (var i = 0; i < _36.length; i++) {
                var row = _36[i];
                var _3b = _3c(row[_38.groupField]);
                if (!_3b) {
                    _3b = {value: row[_38.groupField], rows: [row]};
                    _3a.push(_3b);
                } else {
                    _3b.rows.push(row);
                }
            }
            var _3d = 0;
            var _3e = [];
            for (var i = 0; i < _3a.length; i++) {
                var _3b = _3a[i];
                _3b.startIndex = _3d;
                _3d += _3b.rows.length;
                _3e = _3e.concat(_3b.rows);
            }
            _37.data.rows = _3e;
            this.groups = _3a;
            var _3f = this;
            setTimeout(function () {
                _3f.bindEvents(_35);
            }, 0);

            function _3c(_40) {
                for (var i = 0; i < _3a.length; i++) {
                    var _41 = _3a[i];
                    if (_41.value == _40) {
                        return _41;
                    }
                }
                return null;
            };

            function _39() {
                if (!$("#datagrid-group-style").length) {
                    $("head").append("<style id=\"datagrid-group-style\">" + ".datagrid-group{height:" + _38.groupHeight + "px;overflow:hidden;font-weight:bold;border-bottom:1px solid #ccc;white-space:nowrap;word-break:normal;}" + ".datagrid-group-title,.datagrid-group-expander{display:inline-block;vertical-align:bottom;height:100%;line-height:" + _38.groupHeight + "px;padding:0 4px;}" + ".datagrid-group-title{position:relative;}" + ".datagrid-group-expander{width:" + _38.expanderWidth + "px;text-align:center;padding:0}" + ".datagrid-row-expander{margin:" + Math.floor((_38.groupHeight - 16) / 2) + "px 0;display:inline-block;width:16px;height:16px;cursor:pointer}" + "</style>");
                }
            };
        }, onAfterRender: function (_42) {
            $.fn.datagrid.defaults.view.onAfterRender.call(this, _42);
            var _43 = this;
            var _44 = $.data(_42, "datagrid");
            var _45 = _44.options;
            if (!_44.onResizeColumn) {
                _44.onResizeColumn = _45.onResizeColumn;
            }
            if (!_44.onResize) {
                _44.onResize = _45.onResize;
            }
            _45.onResizeColumn = function (_46, _47) {
                _43.resizeGroup(_42);
                _44.onResizeColumn.call(_42, _46, _47);
            };
            _45.onResize = function (_48, _49) {
                _43.resizeGroup(_42);
                _44.onResize.call($(_42).datagrid("getPanel")[0], _48, _49);
            };
            _43.resizeGroup(_42);
        }
    });
    $.extend($.fn.datagrid.methods, {
        groups: function (jq) {
            return jq.datagrid("options").view.groups;
        }, expandGroup: function (jq, _4a) {
            return jq.each(function () {
                var _4b = $(this).datagrid("options");
                var _4c = $.data(this, "datagrid").dc.view;
                var _4d = _4c.find(_4a != undefined ? "div.datagrid-group[group-index=\"" + _4a + "\"]" : "div.datagrid-group");
                var _4e = _4d.find("span.datagrid-row-expander");
                if (_4e.hasClass("datagrid-row-expand")) {
                    _4e.removeClass("datagrid-row-expand").addClass("datagrid-row-collapse");
                    _4d.next("table").show();
                }
                $(this).datagrid("fixRowHeight");
                if (_4b.onExpandGroup) {
                    _4b.onExpandGroup.call(this, _4a);
                }
            });
        }, collapseGroup: function (jq, _4f) {
            return jq.each(function () {
                var _50 = $(this).datagrid("options");
                var _51 = $.data(this, "datagrid").dc.view;
                var _52 = _51.find(_4f != undefined ? "div.datagrid-group[group-index=\"" + _4f + "\"]" : "div.datagrid-group");
                var _53 = _52.find("span.datagrid-row-expander");
                if (_53.hasClass("datagrid-row-collapse")) {
                    _53.removeClass("datagrid-row-collapse").addClass("datagrid-row-expand");
                    _52.next("table").hide();
                }
                $(this).datagrid("fixRowHeight");
                if (_50.onCollapseGroup) {
                    _50.onCollapseGroup.call(this, _4f);
                }
            });
        }, scrollToGroup: function (jq, _54) {
            return jq.each(function () {
                var _55 = $.data(this, "datagrid");
                var dc = _55.dc;
                var _56 = dc.body2.children("div.datagrid-group[group-index=\"" + _54 + "\"]");
                if (_56.length) {
                    var _57 = _56.outerHeight();
                    var _58 = dc.view2.children("div.datagrid-header")._outerHeight();
                    var _59 = dc.body2.outerHeight(true) - dc.body2.outerHeight();
                    var top = _56.position().top - _58 - _59;
                    if (top < 0) {
                        dc.body2.scrollTop(dc.body2.scrollTop() + top);
                    } else {
                        if (top + _57 > dc.body2.height() - 18) {
                            dc.body2.scrollTop(dc.body2.scrollTop() + top + _57 - dc.body2.height() + 18);
                        }
                    }
                }
            });
        }
    });
    $.extend(_18, {
        refreshGroupTitle: function (_5a, _5b) {
            var _5c = $.data(_5a, "datagrid");
            var _5d = _5c.options;
            var dc = _5c.dc;
            var _5e = this.groups[_5b];
            var _5f = dc.body1.add(dc.body2).children("div.datagrid-group[group-index=" + _5b + "]").find("span.datagrid-group-title");
            _5f.html(_5d.groupFormatter.call(_5a, _5e.value, _5e.rows));
        }, resizeGroup: function (_60, _61) {
            var _62 = $.data(_60, "datagrid");
            var dc = _62.dc;
            var ht = dc.header2.find("table");
            var fr = ht.find("tr.datagrid-filter-row").hide();
            var ww = dc.body2.children("table.datagrid-btable:first").width();
            if (_61 == undefined) {
                var _63 = dc.body2.children("div.datagrid-group");
            } else {
                var _63 = dc.body2.children("div.datagrid-group[group-index=" + _61 + "]");
            }
            _63._outerWidth(ww);
            var _64 = _62.options;
            if (_64.frozenColumns && _64.frozenColumns.length) {
                var _65 = dc.view1.width() - _64.expanderWidth;
                var _66 = dc.view1.css("direction").toLowerCase() == "rtl";
                _63.find(".datagrid-group-title").css(_66 ? "right" : "left", -_65 + "px");
            }
            if (fr.length) {
                if (_64.showFilterBar) {
                    fr.show();
                }
            }
        }, insertRow: function (_67, _68, row) {
            var _69 = $.data(_67, "datagrid");
            var _6a = _69.options;
            var dc = _69.dc;
            var _6b = null;
            var _6c;
            if (!_69.data.rows.length) {
                $(_67).datagrid("loadData", [row]);
                return;
            }
            for (var i = 0; i < this.groups.length; i++) {
                if (this.groups[i].value == row[_6a.groupField]) {
                    _6b = this.groups[i];
                    _6c = i;
                    break;
                }
            }
            if (_6b) {
                if (_68 == undefined || _68 == null) {
                    _68 = _69.data.rows.length;
                }
                if (_68 < _6b.startIndex) {
                    _68 = _6b.startIndex;
                } else {
                    if (_68 > _6b.startIndex + _6b.rows.length) {
                        _68 = _6b.startIndex + _6b.rows.length;
                    }
                }
                $.fn.datagrid.defaults.view.insertRow.call(this, _67, _68, row);
                if (_68 >= _6b.startIndex + _6b.rows.length) {
                    _6d(_68, true);
                    _6d(_68, false);
                }
                _6b.rows.splice(_68 - _6b.startIndex, 0, row);
            } else {
                _6b = {value: row[_6a.groupField], rows: [row], startIndex: _69.data.rows.length};
                _6c = this.groups.length;
                dc.body1.append(this.renderGroup.call(this, _67, _6c, _6b, true));
                dc.body2.append(this.renderGroup.call(this, _67, _6c, _6b, false));
                this.groups.push(_6b);
                _69.data.rows.push(row);
            }
            this.setGroupIndex(_67);
            this.refreshGroupTitle(_67, _6c);
            this.resizeGroup(_67);

            function _6d(_6e, _6f) {
                var _70 = _6f ? 1 : 2;
                var _71 = _6a.finder.getTr(_67, _6e - 1, "body", _70);
                var tr = _6a.finder.getTr(_67, _6e, "body", _70);
                tr.insertAfter(_71);
            };
        }, updateRow: function (_72, _73, row) {
            var _74 = $.data(_72, "datagrid").options;
            $.fn.datagrid.defaults.view.updateRow.call(this, _72, _73, row);
            var tb = _74.finder.getTr(_72, _73, "body", 2).closest("table.datagrid-btable");
            var _75 = parseInt(tb.prev().attr("group-index"));
            this.refreshGroupTitle(_72, _75);
        }, deleteRow: function (_76, _77) {
            var _78 = $.data(_76, "datagrid");
            var _79 = _78.options;
            var dc = _78.dc;
            var _7a = dc.body1.add(dc.body2);
            var tb = _79.finder.getTr(_76, _77, "body", 2).closest("table.datagrid-btable");
            var _7b = parseInt(tb.prev().attr("group-index"));
            $.fn.datagrid.defaults.view.deleteRow.call(this, _76, _77);
            var _7c = this.groups[_7b];
            if (_7c.rows.length > 1) {
                _7c.rows.splice(_77 - _7c.startIndex, 1);
                this.refreshGroupTitle(_76, _7b);
            } else {
                _7a.children("div.datagrid-group[group-index=" + _7b + "]").remove();
                for (var i = _7b + 1; i < this.groups.length; i++) {
                    _7a.children("div.datagrid-group[group-index=" + i + "]").attr("group-index", i - 1);
                }
                this.groups.splice(_7b, 1);
            }
            this.setGroupIndex(_76);
        }, setGroupIndex: function (_7d) {
            var _7e = 0;
            for (var i = 0; i < this.groups.length; i++) {
                var _7f = this.groups[i];
                _7f.startIndex = _7e;
                _7e += _7f.rows.length;
            }
        }
    });
    $.fn.propertygrid.defaults = $.extend({}, $.fn.datagrid.defaults, {
        groupHeight: 28,
        expanderWidth: 20,
        singleSelect: true,
        remoteSort: false,
        fitColumns: true,
        loadMsg: "",
        frozenColumns: [[{field: "f", width: 20, resizable: false}]],
        columns: [[{field: "name", title: "Name", width: 100, sortable: true}, {field: "value", title: "Value", width: 100, resizable: false}]],
        showGroup: false,
        groupView: _18,
        groupField: "group",
        groupStyler: function (_80, _81) {
            return "";
        },
        groupFormatter: function (_82, _83) {
            return _82;
        }
    });
})(jQuery);

